"""
0=>我没关注他，他也没关注我，
1=>我关注了他，他没关注我
2=>我没关注他，他关注了我
3=>我关注了他，他关注了我
"""
from ..models import User, UserLike


def calculate_is_attentions(queryset, user, type):
    """
    收集状态的集合
    :params queryset:查询集
    :params user: 目标用户
    :params type: 类型（关注列表=>1，粉丝列表=>2)
    """
    is_attentions = []
    if type == 1:
        # 查询关注列表中的用户是否关注自己
        for followed_user in queryset:
            followed_user_obj = followed_user.target_user  # 关注的用户对象
            # 查询当前用户是否被关注的用户关注
            user_like_queryset = UserLike.objects.filter(user=followed_user_obj, target_user=user)
            # 根据查询结果判断关注状态
            if user_like_queryset.exists() and user_like_queryset.first().status:
                is_attention = 3
            else:
                is_attention = 1
            is_attentions.append(is_attention)
    elif type == 2:
        # 查询自己是否关注粉丝列表中的用户
        for faned_user in queryset:
            faned_user_obj = faned_user.user  # 粉丝用户对象
            # 查询粉丝用户是否被当前用户关注
            user_like_queryset = UserLike.objects.filter(user=user, target_user=faned_user_obj)
            # 根据查询结果判断关注状态
            if user_like_queryset.exists() and user_like_queryset.first().status:
                is_attention = 3
            else:
                is_attention = 2
            is_attentions.append(is_attention)
    return is_attentions

def add_is_attentions_to_serializer(serializer, is_attentions):
    """
    将is_attention进行序列化
    """
    for data, attention in zip(serializer.data, is_attentions):
        data['is_attention'] = attention